#ifndef _ALL_H_
#define _ALL_H_
#define FALSE 0
#define TRUE 1
#define Bluetooch_Useway 1

// 选择您使用的 E360-S2 飞控 版本
#define ZKHD_E360_S2_FMU_UNKNOW         0
#define ZKHD_E360_S2_FMU_V1_0           1                           // 如果是在 2017年7月5日 以前收到的货，请选择此项
#define ZKHD_E360_S2_FMU_V2_0           2                           // 如果实在 2017年7月5日 以后收到的货，请选择此项
#define ZKHD_E360_S2_FMU_VERSION        ZKHD_E360_S2_FMU_V1_0     // 修改这一项的值(从前面的宏定义项中选择)

// 选择您使用的 E360-S2 采集板 版本
#define ZKHD_E360_S2_SAMPLE_UNKNOW      0
#define ZKHD_E360_S2_SAMPLE_V1_0        1                           // 如果是在 2017年7月5日 以前收到的货，请选择此项
#define ZKHD_E360_S2_SAMPLE_V2_0        2                           // 如果实在 2017年7月5日 以后收到的货，请选择此项
#define ZKHD_E360_S2_SAMPLE_VERSION     ZKHD_E360_S2_SAMPLE_V1_0  // 修改这一项的值(从前面的宏定义项中选择)

#if(ZKHD_E360_S2_FMU_UNKNOW == ZKHD_E360_S2_FMU_VERSION)
    #error  "请修改[ctrl_basic.h]中宏定义 ZKHD_E360_S2_FMU_VERSION 选择您使用的E360-S2[飞控]的版本 双击这条提示，就可以跳转到需要修改的文件"
#endif  // (ZKHD_E360_S2_CONTROL_UNKNOW == ZKHD_E360_S2_CONTROL_VERSION)

#if(ZKHD_E360_S2_SAMPLE_UNKNOW == ZKHD_E360_S2_SAMPLE_VERSION)
    #error  "请修改[ctrl_basic.h]中宏定义 ZKHD_E360_S2_SAMPLE_VERSION 选择您使用的E360-S2[采集板]的版本 双击这条提示，就可以跳转到需要修改的文件"
#endif  // (ZKHD_E360_S2_SAMPLE_UNKNOW == ZKHD_E360_S2_SAMPLE_VERSION)


typedef enum
{
    No = 0,
    Yes,
}YesNo_t;
typedef signed              char    int8;
typedef signed      short   int     int16;
typedef signed              int     int32;
typedef signed      long    long    int64;

typedef unsigned            char    uint8;
typedef unsigned    short   int     uint16;
typedef unsigned            int     uint32;
typedef unsigned    long    long    uint64;
//
//typedef signed              char    int8_t;
//typedef signed      short   int     int16_t;
//typedef signed              int     int32_t;
typedef signed      long    long    int64_t;
//
//typedef unsigned            char    uint8_t;
//typedef unsigned    short   int     uint16_t;
//typedef unsigned            int     uint32_t;
typedef unsigned    long	long    uint64_t;


typedef enum
{
    Failure = 0,
    Success,
}OptSta_t;
typedef enum
{
    USART1 = 0,
	USART5,
	IOUSART
}UART_HandleTypeDef;

#define FLOAT_0                     ((float)(0.0001))
#define FLOAT_EQUAL(x, cmp)         ((((x)-(cmp)) > -FLOAT_0) && (((x)-(cmp)) < FLOAT_0))

#include "stdio.h"
#include "string.h"


#include "r_cg_macrodriver.h"
#include "r_cg_sci.h"
#include "r_cg_tmr.h"
#include "r_cg_port.h"
#include "r_cg_icu.h"

#include "host_computer.h"
#include "isr.h"
#include "my_math.h"
#include "mode1.h"


#include "ctrl_key.h"
#include "ctrl_encoder.h"
#include "ctrl_pid.h"
#include "ctrl_debug.h"
#include "ctrl_fmu.h"
#include "ctrl_smp.h"
#include "ctrl_control.h"
#include "ctrl_serial_graph.h"
#include "ctrl_drone_status.h"





extern uint32 SysDelay_ms_Cnt;
extern uint32 Sys_ms;//bug？？？？？？？？？？？？？？？？？？？？？？？？？？？

//extern YesNo_t En_RC_Offset_Update = No;        // 是否可以更新遥控器微调值
//extern YesNo_t Saving_RC_Offset = No;           // 是否正在保存遥控器微调值
extern float Average_Float(float* pDataBuf, uint16 num);
extern void Fill_Mem(uint8* pAdd, uint16 Len, uint8 FillWith);
extern float Abs(float num);
extern void Constraint(float* pFloatNum, float Min, float Max);
extern void Constraint_By_Abs(float* pFloatNum, float AbsMax);
extern float DataFilter(float* pDataBuf, uint16 Num);
extern void Data_Quick_Sort(float* pDataBuf, uint16 Num);




#endif
